//
// import 'dart:io';
//
// import 'package:fijkplayer/fijkplayer.dart';
// import 'package:flutter/material.dart';
// import 'package:xim/common/cache_management.dart';
// import 'package:xim/http/apis/gfs/gfs_api.dart';
// import 'package:xim/http/ase.dart';
// import 'package:xim/router/index.dart';
//
// /// 视频观看页面
// class VideoViewPage extends StatefulWidget {
//
//   final MediaView mediaView;
//
//   const VideoViewPage({Key? key, required this.mediaView}) : super(key: key);
//
//   @override
//   State<VideoViewPage> createState() => _VideoViewPageState();
// }
//
// class _VideoViewPageState extends State<VideoViewPage> {
//
//   String get plainVideoCacheKey => "aplain:video:cache${widget.mediaView.gfsName}";
//   final player = FijkPlayer();
//   late Future<File> resource;
//
//   @override
//   Widget build(BuildContext context) {
//     return Scaffold(
//       appBar: AppBar(),
//       body: FutureBuilder(
//         future: resource,
//         builder: (BuildContext context, AsyncSnapshot<File> snapshot) {
//           if(snapshot.connectionState == ConnectionState.waiting){
//             return const Center(
//               child: CircularProgressIndicator(),
//             );
//           }else if(snapshot.hasError){
//             return errorInfoWidget("error: ${snapshot.error}");
//           }else{
//             var data = snapshot.data;
//             if(data==null){
//               return errorInfoWidget("not found resource");
//             }
//             player.setDataSource(data.path, showCover: true);
//             return FijkView(
//               fit: FijkFit.fitWidth,
//               player: player,
//             );
//           }
//         },
//       ),
//     );
//   }
//
//   @override
//   void initState() {
//     super.initState();
//     resource = GfsApi.downloadGfsFile(widget.mediaView.gfsName, usingCache: false)
//     .then((file){
//       if(widget.mediaView.plaintextAESKey==null){
//         return file;
//       }
//       // get from cache
//       var fileFromCache = FileCacheManager.instance.getFileFromCache(plainVideoCacheKey);
//       return fileFromCache.then((plainCacheVideo){
//         if(plainCacheVideo!=null){
//           return plainCacheVideo.file;
//         }
//         // aes 解密
//         return file.readAsBytes().then((fileData){
//           var filePlainData = AES.decryptAesBytes(
//               aesKey: widget.mediaView.plaintextAESKey!,
//               encryptData: fileData
//           );
//           // add cache
//           return FileCacheManager
//               .instance
//               .putFile(
//                 plainVideoCacheKey,
//                 filePlainData,
//                 fileExtension: widget.mediaView.fileExtension
//           );
//         });
//       });
//     });
//   }
//
//   @override
//   void dispose() {
//     super.dispose();
//     player.stop();
//     player.dispose();
//   }
//
//   Widget errorInfoWidget(String errorInfo) {
//     return Center(
//       child: Text(errorInfo),
//     );
//   }
//
// }
